iT邦幫忙

2026 iThome 鐵人賽

DAY 7
0
AI Engineering

從呼叫 API 到打造 Gateway:LLM 工程化 30 天系列 第 7

Day 07:Zero-shot vs Few-shot:要不要先給模型看範例?

  • 分享至 

  • xImage
  •  

Day 7|Zero-shot vs Few-shot:要不要先給模型看範例?

昨天把 prompt 的骨架搭好了,今天來看內容怎麼寫比較有效。同一個任務,可以直接叫模型做(zero-shot),也可以先給它看幾個「範例」再叫它做(few-shot)。兩者的差別,常常決定輸出品質跟格式的穩定。

Zero-shot:直接說清楚要什麼

Zero-shot 就是不給範例,單純用指令描述任務。例如:

請判斷以下評論是正面、負面還是中立,只回傳一個詞:「這家店的服務態度很差,但餐點意外地好吃」

這種做法適合任務本身夠簡單、夠明確的情況——模型光靠訓練時學到的知識就能理解怎麼做。缺點是,當任務比較特殊、格式要求比較細(例如你想要的分類詞彙、輸出長度、語氣),光用文字描述,模型不一定每次都抓得準。

Few-shot:先看範例,再照著做

Few-shot 是在正式問題之前,先給模型幾組「輸入 → 輸出」的範例,讓它從範例裡「抓」出你要的格式跟判斷標準。

import os
import anthropic

client = anthropic.Anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])

few_shot_prompt = """請判斷評論的情緒,只回傳「正面」「負面」或「中立」其中一個詞。

評論:「出貨超快,包裝也很仔細」
情緒:正面

評論:「東西還行,沒有特別驚艷」
情緒:中立

評論:「客服完全不回訊息,體驗很差」
情緒:負面

評論:「這家店的服務態度很差,但餐點意外地好吃」
情緒:"""

response = client.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=10,
    messages=[{"role": "user", "content": few_shot_prompt}],
)

print(response.content[0].text)

給了三個範例之後,模型不只知道「要做情緒分類」,還知道「答案只回傳一個詞、用詞是這三選一」。這種格式上的穩定性,是 zero-shot 比較難保證的。

Few-shot 不是萬能的

可能付出的代價:

  • token 成本增加:每次呼叫都要把範例重複送一次,範例越多、越長,成本跟延遲都跟著上升。
  • 範例會「帶風向」:如果給的範例剛好都是某種特定型態(例如都是負評),模型可能會不自覺地偏向那個型態判斷,反而失準。

這裡先點一下:像上面這種「每次都要重複送的固定範例」,其實是很適合搭配 prompt caching 的內容——Part 3 講 Context Engineering 時會回來講怎麼靠這個機制省成本。

今日小結

Zero-shot 適合簡單、明確的任務;任務有特定格式或判斷標準時,few-shot 通常能讓輸出更穩定,代價是多花 token、也要留意範例本身會不會誤導模型。這兩者不用二選一,常見的做法是「先試 zero-shot,不夠穩定再加範例」。

明天要處理的是另一種情況:有些任務不是「格式」不穩,而是模型的「推理過程」本身就會出錯——這時候該怎麼辦?


上一篇
Day 06:Prompt 的基本結構:System / User / Assistant
下一篇
Day 08:Chain-of-Thought:讓模型寫下推理過程
系列文
從呼叫 API 到打造 Gateway:LLM 工程化 30 天22
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言